package com.example.springbootdoc.utils;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;

public class WordUtil {
    /**
     * 根据模板填充内容生成word，并下载
     *
     * @param templatePath word模板文件路径
     * @param paramMap     替换的参数集合
     */
    public static void downloadWord(OutputStream out, InputStream templatePath, Map<String, Object> paramMap, Configure config) throws Exception {

        // 读取模板templatePath并将paramMap的内容填充进模板，即编辑模板(compile)+渲染数据(render)
        XWPFTemplate template = XWPFTemplate.compile(templatePath, config).render(paramMap);

        // 生成本地文件
        //out = new FileOutputStream(filePath);//输出路径(下载到指定路径)
        // 将填充之后的模板写入filePath
        //将template写到OutputStream中

        template.write(out);
        out.flush();
        out.close();
        template.close();

    }

    /**
     * 远程文件url 转为输入流
     * @param urlOrPath 远程文件url
     * @return
     * @throws Exception
     */
    public static InputStream byteByUrl(String urlOrPath) throws Exception {
        URL url = new URL(urlOrPath);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        //设置超时间为3秒
        conn.setConnectTimeout(3 * 1000);
        //防止屏蔽程序抓取而返回403错误
        //conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
        //得到输入流
        return conn.getInputStream();

    }
}

